package com.data.config;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * 动态数据源上下文
 * @author ytj
 * @date 2024/4/19
 */
public class DynamicDataSourceContextHolder {
    /**
     * 默认数据源
     * */
    public final static String DEFAULT_DATASOURCE="master";

    /**
     * 将默认数据源作为初始值
     * */
    public final static ThreadLocal<String> CONTEXT_HOLDER=new ThreadLocal<String>(){
        @Override
        protected String initialValue() {
            return DEFAULT_DATASOURCE;
        }
    };

    /**
     * 数据源keys用户切换时判断是否存在
     * */
    private final static List<Object> dataSourcesKeys=new ArrayList<>();

    /**
     * 设置数据源
     * */
    public final static void setDataSource(String key){
        CONTEXT_HOLDER.set(key);
    }

    /**
     * 获取数据源
     * */
    public final static String getDataSource(){
        return CONTEXT_HOLDER.get();
    }

    /**
     * 删除数据源
     * */
    public final static void removeDataSource(){
        CONTEXT_HOLDER.remove();
    }

    /**
     * 添加数据源keys
     * */
    public final static void addDataSourceKeys(Collection<?> keys){
        dataSourcesKeys.addAll(keys);
    }
}
